package cqrtplm.dto;

import com.hustcad.plm.pdm.partbom.dto.PartDescribeLinkDTO;
import com.hustcad.plm.pdm.partbom.dto.PartReferenceLinkDTO;
import com.hustcad.plm.pdm.partbom.dto.SubPartsDTO;
import com.ty.basic.dto.PartMPNLinkDTO;
import com.ty.basic.dto.constraint.IbaDTO;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigInteger;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PartInputDTO {
    /**
     * {"number":"part202508042322011248620","masteredoid":"722283546524270593","oid":"722286098447892480",
     * "name":"测试555","enditem":"0","assemblyMode":"separable","viewDefOid":"323899843229581312","partView":"Design",
     * "defaultunitkey":"PCS","unit":"PCS","typeOid":"709776205469089792","typeInthid":"ty.inteplm.part.CTyPart|产品型谱",
     * "typeOtype":"ty.inteplm.part.CTyPart|产品型谱","type":"part","otype":"ty.inteplm.part.CTyPart",
     * "masteredotype":"ty.inteplm.part.CTyPartMaster","typeName":"产品型谱","creatorName":"admin","creatorFullName":"admin",
     * "modifierFullName":"admin","modifierName":"admin","ownername":"admin","creationTime":"2025-08-04 23:22:20",
     * "lastupdatestampstr":"2025-08-05 09:05:04","modifyTime":"2025-08-05 09:05:04","checkoutState":"wrk","updatecount":"5",
     * "version":"A","companyversion":"A","iterationid":"1","iteration":"1","foldernameinfo":"产品型谱","islastiterated":"Y",
     * "branchid":"722283547191164928","lifecycleMasterName":"润通通用生命周期模板","lifecycleTemplateID":"720741524967161856",
     * "lifecycletemplateotype":"ty.inteplm.lifecycle.CTyLifecycleTemplate","lifecycleState":"创建中","lifecycleStateKey":"Creating",
     * "ibaAttributeMap":{"Stage":[""],"BusinessEdition":[""],"ChangeContent":[""],"productType":["机型222"],"devCode":["开发令555"],
     * "State":["Creating"],"ModelDescription":[""],"applicableScope":[""],"HistoricalModelDescription":[""],"ProductLineCoding":[""],
     * "AlternativeModelsLow":[""],"AlternativeModelsMiddle":[""],"HistoricalModels":[""],"ProductLineName":[""],"AlternativeModelsHigh":[""],
     * "REMARK":[""],"productTypeV2":[""],"priority":[""]},"containerotype":"ty.inteplm.product.CTyPDMLinkProduct","containeroid":"707053057766981632",
     * "folderPath":"/开发人员专用/产品型谱","lockeroid":"105","lockeroName":"admin","lockdate":"2025-08-04 23:32:28","lockeroFullName":"admin",
     * "ownerFullName":"admin","containerName":"开发人员专用","subfolderotype":"ty.inteplm.folder.CTySubFolder","subfolderoid":"722282912949485568",
     * "cabinetoid":"707053057783758848","cabinetotype":"ty.inteplm.folder.CTyCabinet","genericType":"standard","phantom":"0",
     * "classId":"720078107371749376","classDisplayName":"TJ-通机","domainoid":"707053057779564544","domainotype":"ty.inteplm.domain.CTyDomain",
     * "isVersionInfo":true,"historyVersion":false,"permission":"524263","icon":"tyIconfont t-icon t-icon-Part","creatoroid":"105",
     * "owneroid":"105","updatoroid":"105","lockstateinfo":"wrk","view":"Design","objectNumber":"part202508042322011248620","displayView":
     * "Design","displayVersion":"A.1(Design)","identifierDisplayName":"part202508042322011248620,测试555,A.1(Design)","Stage":"",
     * "BusinessEdition":"","ChangeContent":"","productType":"机型222","devCode":"开发令555","partNumber":"part202508042322011248620",
     * "description":"","State":"Creating","ModelDescription":"","applicableScope":"","HistoricalModelDescription":"","ProductLineCoding":"",
     * "AlternativeModelsLow":"","AlternativeModelsMiddle":"","HistoricalModels":"","ProductLineName":"","AlternativeModelsHigh":"","REMARK":"",
     * "productTypeV2":"","priority":"","collapsible":null}
     */
    @ApiParam("对象主键字符串")
    private String oid;
    @ApiParam("对象类型字符串")
    private String oType;
    @ApiParam("部件编码")
    private String Number;
    @ApiParam("产品id")
    private String productID;
    @ApiParam("部件名称")
    private String name;
    @ApiParam("英文描述")
    private String description;
    @ApiParam("来源")
    private String source;
    @ApiParam("组织id")
    private String organization;
    @ApiParam("单位")
    private String unit;
    @ApiParam("生命周期模板名称(自制件和采购件的区别)")
    private String lifecycleTemplate;
    @ApiParam("part 部件视图 PSView 新建后台初始化可不传")
    private String partView;
    @ApiParam("容器名称")
    private String containerName;
    @ApiParam("容器类型 product/library")
    private String containerType;
    @ApiParam("容器id")
    private String containerID;
    @ApiParam("文件夹名称")
    private String folderName;
    @ApiParam("文件夹id")
    private String folderId;
    @ApiParam("分类名称")
    private String categoryName;
    @ApiParam("装配模式")
    private String assemblyMode;
    @ApiParam("修改人")
    private String modifier;
    @ApiParam("所有人")
    private String owner;
    @ApiParam("创建人不能为空")
    private String creator;
    @ApiParam("实际上用户名称")
    private String userID;
    @ApiParam("秘级oid")
    private BigInteger securityLabeledOid;
    @ApiParam("秘级oType")
    private String securityLabeledOType;
    @ApiParam("秘级key")
    private String security;
    @ApiParam("是否虚拟件")
    private String virtual;
    @ApiParam("是否成品")
    private String enditem;
    @ApiParam("类型id")
    private Long typeOid;
    @ApiParam("类型字符串")
    private String typeOtype;
    @ApiParam("是否虚拟件")
    private Long phantom;
    @ApiParam("新增文件描述信息")
    private Map<String, String> descriptionMap;
    @ApiParam("需删除文件oid")
    private List<String> deleteFileOidList;
    private LinkedHashMap<String, List<String>> ibaAttributeMap;
    @ApiParam("检入备注")
    private String checkInRemark;
    @ApiParam("BOM子项入参")
    private List<SubPartsDTO> subParts;
    @ApiParam("参考文档入参")
    private List<PartReferenceLinkDTO> referenceDocs;
    @ApiParam("描述文档入参")
    private List<PartDescribeLinkDTO> descDocs;
    @ApiParam("mpn入参")
    private List<PartMPNLinkDTO> mpns;
    @ApiParam("MasterIBA")
    private List<IbaDTO> partMasterAtts;
    @ApiParam("IBA属性入参")
    private List<IbaDTO> partAtts;
    @ApiParam("状态属性入参")
    private List<IbaDTO> refPartAtts;
    private BigInteger subfolderoid;
    private String containerotype;
    private BigInteger containeroid;
    private BigInteger workSpaceOid;
    private String genericType = "standard";
    private Long collapsible;
}
